Open
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
3882e5d to
6180dfc
Compare
b1cafca to
6daab1b
Compare
cb1f06d to
4006688
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
v0.13.0 - 2026-04-14
Features
Added
Multi-target file mappings in
repoverlay.cclA source file can now map to multiple target paths using duplicate keys in the
mappingssection:mappings = .editorconfig = .editorconfig .editorconfig = packages/frontend/.editorconfigThis copies the source file to every listed target. Single-value mappings continue to work as before. All targets are tracked in the overlay state file, so
removecleans up every copy.Fixes
Fixed
Log warnings when .ccl state files fail to parse instead of silently skipping
Previously, corrupted or unparseable .ccl state files were silently ignored. Now repoverlay logs a warning message identifying the problematic file before skipping it, making it easier to diagnose configuration issues.
Save-source prompt duplicate-check now sees repo-local sources
prompt_save_source()loaded only global config when checking for duplicates, so it could prompt the user to save a source that was already configured at the repo level. The duplicate-check now loads the merged config (global + repo-local) while still writing saves to the global config file.Command:
libraryFixed
Surface file read errors in show_file_diff instead of silently treating as empty
Previously, if reading either the existing or overlay file failed in show_file_diff, the error was silently swallowed and the file was treated as empty. Now the function logs a warning and prints a user-visible warning message identifying the problematic file before returning early.
Validate overlay names reject path separators in release builds
OverlayNamepreviously only checked for forward slashes viadebug_assert, meaning invalid names with path separators (including backslashes) could slip through in release builds. AddedOverlayName::try_newwhich returns an error for names containing/or\, and updated all user-input paths to use it.Use atomic write-then-rename for state files to prevent corruption
State file writes previously used a non-atomic truncate-then-write pattern, which could leave corrupted or empty files if the process was interrupted mid-write. State files are now written to a temporary file in the same directory and atomically renamed into place using tempfile::NamedTempFile.
Command:
applyFixed
Resolve three-part overlay references using repo-local sources
Three-part references like
org/repo/overlayfailed with "Overlay repository not configured" when the source was configured at the repo level viarepoverlay source add. Repo-local sources in.repoverlay/config.cclare now correctly loaded during resolution.Match GitHub URLs against repo-local sources for overlay repo upgrade
When applying via a GitHub URL that matches a configured source, repoverlay upgrades to editable overlay repo mode. This matching now includes repo-local sources, not just global ones.
Command:
createFixed
create --into libraryresolves library path relative to target repo instead of sourcePreviously,
create --into library --source <path>placed the overlay into the source repo's library instead of the target repo's (cwd). Added--targetparameter to thecreatecommand for explicit target specification, consistent with other commands likemoveandswitch.Command:
moveAdded
repoverlay movecommand for relocating overlaysAdds a new top-level
movecommand that relocates an overlay's source files between locations while preserving applied state. Supports moving to the in-repo library (--to library), to a filesystem path (--to /path/to/dir), or renaming on move (--name).The operation is interrupt-safe: files are copied to the destination, state is updated, symlinks are re-created pointing to the new location, then the source is deleted. If interrupted, the worst case is a duplicate that can be cleaned up manually.
Supports
--forceto overwrite existing destinations and--dry-runto preview changes.